﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;
using Control_Searcher;

using Telerik.WinControls.UI;
using BE;
using System.Configuration;
using System.Globalization;
using BLL;
using System.IO;

namespace SearchControls
{
    public partial class TekstGemmer : Telerik.WinControls.UI.RadForm
    {
        private ReadInfo info;
        public TekstGemmer()
        {
            checkSearchValidation();
            Configuration config = ConfigurationManager.OpenExeConfiguration(@"LanguageApp.exe");
            InitializeComponent();
            info = new ReadInfo(new CultureInfo(config.AppSettings.Settings["Language"].Value));
            info.forms = Subjects.getForms();
            info.files = Subjects.getStrings();
            //start den store søgning efter kontroller
            info.saveAllTexts();
            //fyld treeviewet ud med askables og lad udvikleren vælge hvad for nogle han vil skille sig af
            foreach (KeyValuePair<int,Dictionary<int,ControlInfo>> pair in info.askable)
            {
                RadTreeNode parent = new RadTreeNode();
                parent.Value = pair.Key;
                parent.Text = "";
                foreach (ControlInfo cinfo in pair.Value.Values)
                {
                    
                    RadTreeNode child = new RadTreeNode();
                    child.Text = cinfo.Name + ": " + cinfo.Text;
                    parent.Nodes.Add(child);
                    if (parent.Text.Length < 1)
                        parent.Text = cinfo.ParentType + ": " + cinfo.parentControl;
                }
                parent.Checked = true;
                radTreeView1.Nodes.Add(parent);
            }
           
        }
        private void checkSearchValidation()//hvis dette vindue startes uden for master vinduet fordi det skal debugges
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(@"LanguageApp.exe");
            string con = DBCommands.CheckDbConnection();
            if (con != null)
            {
                ShowErrorBox("Der var en fejl med din connectionstring: \"" + con + "\"", "Fejl med connection string");
            }
            if (!File.Exists(config.AppSettings.Settings["SlnFile"].Value))
            {
                
                ShowErrorBox("Den angivede Sln fil er ugyldig", "Ugyldig Sln fil");
            }
            if (!File.Exists(@"..\..\..\Control Searcher\Control Searcher.csproj.Original"))
            {
                ShowErrorBox("Der er ingen backup af control searcher projekt filen", "Fil Mangler");
            }

        }

        private void ShowErrorBox(string message, string title)
        {
            DialogResult result = MessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
            Application.Exit();
        }
        private void radButton1_Click(object sender, EventArgs e)
        {
            //find ud af hvad brugeren har valgt at gemme og fjern dem han ikke vil gemmme
            List<int> removeList = new List<int>();
            for (int i = radTreeView1.Nodes.Count - 1; i >= 0; i--)
            {
                if (radTreeView1.Nodes[i].Checked)
                {
                    int idx = (int)radTreeView1.Nodes[i].Value;
                    removeList.Add(idx);
                }
            }
            info.removeTexts(removeList);
            info.SaveToDb(); //gem til databasen
            //lav maintenance på filerne der bruges til tekstsøgning
            System.IO.File.Copy( @"..\..\..\Control Searcher\Control Searcher.csproj.Original",@"..\..\..\Control Searcher\Control Searcher.csproj", true);
            System.IO.File.Copy(@"..\..\..\Control Searcher\Subject.cs.org", @"..\..\..\Control Searcher\Subjects.cs", true);
           
            try
            {
                System.IO.File.Delete(@"..\..\..\Control Searcher\Control Searcher.csproj.Original");
            }
            catch (System.IO.IOException ex)
            {
                
            }
            Application.Exit();
        }
    }
}
